#include "stm32f10x.h"                  // Device header
#include "PWM.h"

/**
 * @brief 初始化电机
 *
 * 此函数用于初始化电机方向控制。
 *
 * 初始化过程中，首先通过RCC_APB2PeriphClockCmd函数开启GPIOA外设的时钟，
 * 然后通过GPIO_Init函数配置GPIOA的特定引脚为推挽输出模式，并设置引脚速度和输出模式。
 * 最后调用PWM_Init函数初始化PWM，以控制电机转速。
 */
void Motor_Init(void)
{
	//电机方向控制初始化
	
	//参数1,表示是器件接在a外设上的，参数2表示的是开启时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	
	//配置端口模式
	//定义结构体变量
	//typedef 进行变量重命名
	GPIO_InitTypeDef GPIO_InitSturcrture;
	//结构体参数1：设置为推挽输出
	GPIO_InitSturcrture.GPIO_Mode = GPIO_Mode_Out_PP;
	//结构体参数1：选择接口
	GPIO_InitSturcrture.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5;
	//结构体参数1：选择速度
	GPIO_InitSturcrture.GPIO_Speed = GPIO_Speed_50MHz;
	
	/*
	调用GPIO_Init函数
	参数一GPIO外设
	参数二为结构体变量名
	*/
	GPIO_Init(GPIOA,&GPIO_InitSturcrture);
	
	PWM_Init();
	
}

/**
 * @brief 设置电机速度
 *
 * 根据给定的速度值设置电机的转速.
 *
 * @param Speed 速度值
 */
void Motor_SetSpeed(int8_t Speed)
{
	//正转
	if(Speed >= 0)
	{
		//电机方向
		GPIO_SetBits(GPIOA,GPIO_Pin_4);
		GPIO_ResetBits(GPIOA,GPIO_Pin_5);
		
		//速度
		PWM_SetCompare3(Speed);
	}
}



